/*
 * Copyright (c) Huawei Technologies Co., Ltd. 2022-2023. All rights reserved.
 */

package com.huawei.aiservice.utils;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;

import java.lang.reflect.Type;

/**
 * Json相关操作工具
 *
 * @since 2022/11/09
 */
public class JsonUtil {
    private static Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH-mm-ss").create();

    /**
     * object转json
     *
     * @param obj 入参对象
     * @return String json数据
     */
    public static String toJson(Object obj) {
        return gson.toJson(obj);
    }

    /**
     * json转对象
     *
     * @param json json数据
     * @param classOfT class类型
     * @param <T> 泛型
     * @return <T> T 返回数据对象
     */
    public static <T> T fromJson(String json, Class<T> classOfT) {
        return gson.fromJson(json, classOfT);
    }

    /**
     * json转对象
     *
     * @param json json数据
     * @param typeOfT class类型
     * @param <T> <T> 泛型
     * @return <T> T 返回数据对象
     */
    public static <T> T fromJson(String json, Type typeOfT) {
        return gson.fromJson(json, typeOfT);
    }

    /**
     * obj转JsonObject
     *
     * @param obj 入参对象
     * @return JsonObject 返回对象
     */
    public static JsonObject toJsonObject(Object obj) {
        String json = gson.toJson(obj);
        return gson.fromJson(json, JsonObject.class);
    }
}
